// 引入配置
import {baseUrl} from '@/common/env'

/*
* 全局请求封装
* @param path 请求路径
* @param method 请求类型(GET/POST/DELETE等)
* @oaram data 请求体数据
* @param loading 请求未完成是是否显示加载中，默认为true
*/
// export default (url: string, data = {}, method: "GET" |"POST" = 'GET', loading = false) => {
// 	if (loading) {
// 		uni.showLoading({
// 			title: "加载中",
// 			mask: true
// 		});
// 	};
//   return tokenRequest(url, method, data)
// };

// 有token时发送请求函数
// function tokenRequest(path: string, method: "GET" | "POST", data: object) {
//   // 获取存储token
// 	const token = uni.getStorageSync("token") || '';

// 	return new Promise((resolve, reject) => {
// 		uni.request({
// 			url: path,
// 			method,
// 			data,
// 			header: {
// 				"Authorization":  token
// 			},
// 			success(response) {
// 				console.log('%c响应拦截：', ' background:green', response);
// 				if (response.data.code === 40101) {
// 					// logout()
// 				}
// 				console.log(response.data)
// 				resolve(response.data);
// 			},
// 			fail(err) {
// 				uni.showToast({
// 					icon: "none",
// 					title: '服务响应失败'
// 				});
// 				console.error(err);
// 				reject(err);
// 			},
// 			complete() {
// 				uni.hideLoading();
// 			}
// 		});
// 	});
// }

export const http  = (options: UniApp.RequestOptions) => {  
	// 1. 返回 Promise 对象
  return new Promise((resolve, reject) => {
    uni.request({
      ...options,
      // url: `http://120.92.208.117:18899/api${options.url}`,
      url: `${baseUrl}${options.url}`,
      dataType: 'json',
      // #ifndef MP-WEIXIN
      responseType: 'json',
      // #endif
      // 响应成功
      success(res) {
				// console.log('http success...', res);
				        /* 对响应成功做点什么 可使用async await 做异步操作*/
        const {code, data, message} = res.data as any;
        // 自定义参数
        // const custom = response.config?.custom

        if(code == 20002) {
            // Storage.clearCache();
						reject(data)
        }
        else if (code !== 20000) { // 服务端返回的状态码不等于200，则reject()
            // 如果需要catch返回，则进行reject
            // if (custom?.catch) {
            //     return Promise.reject(data)
            // } else {
            //     // 否则返回一个pending中的promise
            //     return new Promise(() => { })
            // }
						// reject(data)
        }
        return resolve(data || {})
      },
      // 响应失败
      fail(err) {
        // uni.showToast({
        //   icon: 'none',
        //   title: '网络错误，换个网络试试',
        // })
        reject(err)
      },
    })
  })
}

export const get = (url:string, data?: Object) => {
	return http({url, method: 'GET', data})
}
export const post = (url:string, data?: Object) => {
	return http({url, method: 'POST', data})
}